package version1;

import com.mysql.jdbc.Driver;
import jdk.internal.util.xml.impl.Input;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/*版本1--封装
* Mysql工具类
* 1.数据库：地址、用户名、密码  私有属性--静态化
* 2.静态方法【本类直接调用】getParam(String 外置文件路径)
* 目的：使用方法调用外部文件 db_mysql.properties
* db_mysql.properties 对应 Java Properties类：读取键值对形式信息
* Properties类 提供赚钱 load() 读取配置文件信息【键值对-数据】
* 3.通过封装概念--连接成功数据库【通用一个类链接Mysql和Oracle】
* */
public class Mysql {
    //1.任何数据库具备：地址、用户名、密码--私有静态属性
    private static String url;
    private static String username;
    private static String password;
    //2.静态方法：getParam(String 路径)---链接数据库--读取信息
    //2.1配置文件：键值对出现，保存数据库对应的基本信息  XXX.properties配置文件信息

    public static void getParam(String fileName) throws IOException {
        //2.2 Properties类--读取xxx.properties配置文件信息
        Properties p=new Properties();
        //2.3 外置文件读取---借助IO---搬运数据---InputStream
        //Mysql.class 表示当前Mysql类的Class对象
        //理解：图书馆--区域存Mysql相关书籍
        //getClassLoader() 获取当前类的加载器【加载器负责读取配置文件信息】
        //理解:图书馆--区域Mysql相关书籍----图书管理员---找明确的书籍---拿明确书籍
        //getResourceAsStream(文件) 获取当前加载器中键值对信息
        InputStream fis=
                Mysql.class.getClassLoader().getResourceAsStream(fileName);
        p.load(fis);

    //2.4 读取数据库的基本信息【url、用户、密码】赋值给当前对象【url、用户、密码】
    //读取db_mysql.properties中键
    url=p.getProperty("url");
    username=p.getProperty("username");
    password=p.getProperty("password");
        System.out.println("测试链接成功:"+url+username+password);
}

    public static void main(String[] args) throws IOException, SQLException {
        //测试封装概念--连接成功数据库
        Mysql.getParam("db_mysql.properties");

        //参考Mysql封装，写Oracle封装【作业2】
/*public class Oracle {
    // 1. 定义 Oracle 数据库连接的私有静态属性
    private static String url;
    private static String username;
    private static String password;
    // 2. 静态方法：读取 Oracle 配置文件并赋值属性
    public static void getParam(String fileName) throws Exception {
        Properties p = new Properties();
        // 通过类加载器获取配置文件输入流
        InputStream fis = Oracle.class.getClassLoader().getResourceAsStream(fileName);
        p.load(fis);
        // 读取配置文件中的 Oracle 连接信息
        url = p.getProperty("url");
        username = p.getProperty("username");
        password = p.getProperty("password");
        // 加载 Oracle 数据库驱动（不同版本驱动类名可能有差异，以实际为准）
        Class.forName("oracle.jdbc.driver.OracleDriver");
        System.out.println("Oracle 配置加载成功：" + url + username);
    }
    // 3. 新增获取 Oracle 数据库连接的方法（可选，若后续要操作数据库可直接用）
    public static Connection getConnection() throws Exception {
        return DriverManager.getConnection(url, username, password);
    }
}*/


        //连接成功Mysql---book表---增加一条记录操作
        //1.创建链接--Connection 代表Java连接成功数据库
        Connection con=
                DriverManager.getConnection(url,username,password);
        //2.执行sql---Statement 代表Java执行数据库 sql
        Statement st=con.createStatement();
        //3.【CRUD操作：增删改 executeUpdate()  查 executeQuery】
        String sql="insert into book values(6,'余华','活着',79,'2010年',80,'否')";
        //作业3：删和改【改sql】--查【参考：OracleIDBC查询方案】
        /*String sql ="delete from book where id=6";
        String sql="update book set author='余华' where id=6";
        int rows=st.executeUpdate(sql);
        String sql="select * from book";
        * */
        int rows=st.executeUpdate(sql); //执行增删改，返回值int类型
        System.out.println("成功添加了："+rows+"一条记录");
        //4.关闭连接--Statement--Connection
        st.close(); con.close();
    }
}